package org.sam.swing;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

import org.sam.swing.JSColorChooserDialog.ColorChooserLisenter;

/**
 * 颜色选择button控件
 * 
 * @author sam
 *
 */
public class JSColorButton extends JButton implements ActionListener , ColorChooserLisenter{

	private static final long serialVersionUID = 3068266978248390063L;
	
	/**
	 * colorchoose对象
	 */
	protected JSColorChooserDialog colorChooser;

	/**
	 * 当期操作的颜色
	 * 
	 * @return
	 */
	public Color getColor() {
		JSButtonIcon icon = (JSButtonIcon) this.getIcon();
		if (icon.getIconColor() == null){
			return Color.BLACK;
		} 
		return icon.getIconColor();
	}

	/**
	 * 当前的操作的颜色
	 * 
	 * @param color
	 */
	public void setColor(Color color) {
		JSButtonIcon icon = (JSButtonIcon) this.getIcon();
		icon.setIconColor(color);
	}

	/**
	 * 使用默认配置的颜色选择按钮
	 */
	public JSColorButton() {
		super(new JSButtonIcon());
		this.setColor(Color.BLACK);
		this.addActionListener(this);
		
		colorChooser = new JSColorChooserDialog();
		this.colorChooser.addColorChooserLisenter(this);
	}

	/**
	 * 带color的构造参数
	 * @param color
	 */
	public JSColorButton(Color color){
		super();
		this.setIcon(new JSButtonIcon(color));
		this.addActionListener(this);
		
		colorChooser = new JSColorChooserDialog();
		this.colorChooser.addColorChooserLisenter(this);
	}
	
	/**
	 * 颜色设置
	 * @param color
	 */
	public JSColorButton(int color){
		this(new Color(color));
	}

	/**
	 * 按钮点击事件
	 * @param e
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		colorChooser.setVisible(true);
	}

	/**
	 * 颜色选择后的回调
	 */
	@Override
	public void afterChoose(Color color) {
		this.setColor(color);
	}
	
}
